<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>const跨模块常量</title>
</head>
<body>

<script type="module">
    // es6中按照一定的模式 从数组或对象中提取值，对变量进行赋值 这种操作称之为解构(Destructuring)
    //完全解构 ： 等号左边的模式完全匹配等号右边的数组
    //不完全解构：等号左边的模式只匹配一部分等号右边的数组
    // let [a,b,c]  = [1, 2];
    // console.log(a);
    // console.log(b);
    // console.log(c);

    //指定默认值：

    // 数组的解构赋值
    // 只要某种数据结构具有 Iterator接口，都可以采用数组形式的解构赋值。
    // Iterator 的作用有三个：
    // 一是为各种数据结构，提供一个统一的、简便的访问接口；
    // 二是使得数据结构的成员能够按某种次序排列；
    // 三是 ES6 创造了一种新的遍历命令for...of循环，Iterator 接口主要供for...of消费。


    // let [name,[age,address],score] = ['张三',[18,'北京'],80]
    // console.log(name);
    // console.log(age);
    // console.log(address);
    // console.log(score);

    // ... 扩展符的使用
    // let [a,...c] = [1,2,3,4,5,6,7,8];
    // console.log(a);
    // console.log(...c);


    // var [temp = '张三'] = ['李四']; //给定默认值
    // console.log(temp);

    // var [a = 5] = [10];
    // console.log(a);


    // var [x = 'zhangsan', y='lisi'] = ['wang','liu'];
    // console.log(x);
    // console.log(y);
    //
    // var [x='hello',y] = ['aaa'];
    // console.log("x的值:"+x);
    // console.log("y的值:"+y);
    // //

    // var [i,j="test"] = ['iii',undefined];
    // console.log("i的值:"+i);
    // console.log("j的值:"+j);


    //非遍历结构下的程序错误
    //
    // var [temp] = 1;
    // var [temp] = false;
    // var [temp] = NaN;
    // var [temp] = undefined;
    // var [temp] = null;

    // console.log(temp); // 1 is not iterable 不是可重复可迭代的结构


    // let [a,b,c] = new Set(["11","22","33"]);
    // console.log(a);
    // console.log(b);
    // console.log(c);


    // 延伸
    // function* fn() {
    //     let a = 0;
    //     let b = 1;
    //     while (true){
    //         yield a;
    //         [a,b] = [b, a + b];
    //
    //     }
    // };
    //
    // var [first,second,third,fourth,fifth,sixth] = fn();
    //
    // console.log(first);

    // fn是一个Generator(生成器)函数，原生具有Iterator接口。解构赋值会依次从这个接口获取值。



    














</script>

</body>
</html>